package _2_替换空格;

/**
 * 题目描述
 *  请实现一个函数，将一个字符串中的每个空格替换成“%20”。
 *  例如，当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
 */

/**
 * 思路
 *  先统计字符串中的空格数，修改buffer的长度，从原长度开始倒着往前安排，发现空格就替换
 */
public class Solution {
    public String replaceSpace(StringBuffer str) {
        if(str==null){
            return null;
        }
        int spaceNum=0;
        for(char c :str.toString().toCharArray()){
            if(c==' '){
                spaceNum++;
            }
        }
        int indexOld = str.length()-1;
        //原来的空格换为3个字符，增加2个
        int newLength = str.length()+spaceNum*2;
        str.setLength(newLength);
        char tmp;
        for(int i=str.length()-1;i>=0&&indexOld>=0;){
            if((tmp=str.charAt(indexOld--))!=' '){
                str.setCharAt(i--,tmp);
            }
            else{
                str.setCharAt(i--,'0');
                str.setCharAt(i--,'2');
                str.setCharAt(i--,'%');
            }
        }
        return str.toString();
    }
}
